from redis import StrictRedis
import logging
class Config(object):
    """配置文件的加载"""

    #配置秘钥：项目中的CSRF和session需要用到，还有一些其他的签名算法也要用到
    SECRET_KEY = 'asdjhasfh'

    #开启调试模式
    DEBUG = True

    #配置MySQL数据库：实际开发写数据的真实ip
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/infomation_test'

    #不追踪数据库的更改，因为会有明显的开销
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    #配置Redis数据库
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    #配置flask_session,将session数据写入到服务器的redis数据库
    #指定session数据储存在redis
    SESSION_TYPE = 'redis'
    #告诉session服务器redis的位置
    SESSION_REDIS =StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    #是否将session签名后再储存
    SESSINO_USE_SIGNER = True
    #当SESSION_PERMANENT为Ture时，设置session的有效期才可以成立，正好默认就是Ture
    PERMANENT_SESSION_LIFETIME = 60*60*24 #自定义为一天有效期


class DevelopmenConfig(Config):
    """开发环境的配置"""
    # 开发环境下的日志等级
    LEVEL_LOG = logging.DEBUG
    
    #因为其配置与父类一致，所以pass
    # pass

    

class ProductionConfig(Config):
    """生产环境下的配置：项目上线后"""

    #关闭调试模式
    DEBUG = False

    #指定生产环境下的数据库
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/infomation_test'

    # 开发环境下的日志等级
    LEVEL_LOG = logging.ERROR

class UbittestConfig(Config):
    """测试环境的配置"""

    #开启测试模式
    TESTING = True

    #指定测试数据库
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/infomation_test_28'

    # 开发环境下的日志等级
    LEVEL_LOG = logging.DEBUG

#准备工厂方法create_app（参数）的原材料
configs = {
    'dev':DevelopmenConfig,
    'pro':ProductionConfig,
    'unit':UbittestConfig
}